ДЛЯ НОВИЧКОВНЕ ДЛЯ НОВИЧКОВНЕ ОБЯЗАТЕЛЬНОВ РАЗРАБОТКЕ
Разработчику
Архитектору
Инженеру
Чек-лист самопроверки
- Что такое машинное слово и как его размер влияет на адресацию памяти?
- Почему 32-битная система не может напрямую использовать более 4 ГБ оперативной памяти?
- Как размер машинного слова влияет на производительность арифметических операций?
- Что такое порядок байтов (endianness) и почему он важен при работе с сетевыми протоколами?
- Как регистры процессора связаны с размером машинного слова?
- Почему выравнивание данных повышает производительность доступа к памяти?
- Что такое padding и зачем компилятор его вставляет в структуры?
- Как директива
#pragma pack(1) влияет на расположение полей в структуре?
- Какие последствия имеет отключение выравнивания для производительности и совместимости?
- Почему глобальные переменные размещаются в сегменте данных, а локальные — в стеке?
- В чём разница между автоматическим и динамическим размещением данных?
- Как работает указатель стека (RSP/ESP) при входе и выходе из функции?
- Что такое фрейм стека и какие данные он содержит?
- Почему обращение к неинициализированной локальной переменной приводит к неопределённому поведению?
- Как сборщик мусора определяет, что объект больше не используется?
- Что такое жизненный цикл переменной и как он зависит от области видимости?
- В чём разница между передачей по значению и по ссылке?
- Почему строки в Python и C# считаются неизменяемыми?
- Что происходит при присвоении нового значения строковой переменной в управляемых языках?
- Как замыкания влияют на время жизни переменных?
- Что такое чистая функция и почему она предсказуема?
- Как стек вызовов помогает отслеживать цепочку ошибок?
- Почему важно давать функциям говорящие имена?
- Как композиция функций упрощает построение сложной логики?
- Что такое сигнатура функции и зачем она нужна?
- Как работает оператор
return и почему он немедленно завершает функцию?
- Что такое итерация и как она реализуется в цикле?
- В чём разница между циклом
for и циклом while?
- Почему цикл
do-while гарантированно выполняется хотя бы один раз?
- Как избежать бесконечного цикла при использовании
while?
- Что такое вложенные циклы и как рассчитывается общее число их итераций?
- Почему использование одной переменной-счётчика в нескольких вложенных циклах — ошибка?
- Как условный оператор реализуется на уровне машинных инструкций?
- Что такое флаговый регистр и как он используется при сравнениях?
- В чём разница между
if, if-else и if-elif-else?
- Когда уместно использовать тернарный оператор?
- Почему смешивание присваивания (
=) и сравнения (==) — частая ошибка?
- Как ранний выход (early return) упрощает чтение кода с множественными условиями?
- Что такое байт-код и чем он отличается от машинного кода?
- Как виртуальная машина обеспечивает платформонезависимость?
- В чём разница между интерпретацией и JIT-компиляцией?
- Почему JIT-компиляция может быть быстрее чистой интерпретации?
- Что такое AOT-компиляция и когда она предпочтительна?
- Как работает стековая модель виртуальной машины?
- Что такое верификация байт-кода и зачем она нужна?
- Как сборка мусора интегрирована в жизненный цикл программы в JVM или .NET?
- Что такое дизассемблирование и какие инструменты его выполняют?
- Чем декомпиляция отличается от дизассемблирования?
- Почему восстановленный код редко компилируется без доработки?
- Что такое неопределённое поведение и почему оно опаснее исключения?